package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;

/**
 * 程序启动后，要求完成用户注册功能
 * 1.提示用户分别输入用户名，密码，昵称和年龄
 * 2.将用户输入的信息插入到userinfo表中
 */
public class RegDemo {
    public static void main(String[] args) throws Exception {
//        Scanner scanner =new Scanner(System.in);
//        System.out.println("欢迎注册");
//        System.out.println("请输入用户名");
//        String username=scanner.nextLine();
//        System.out.println("请输入密码");
//        String password=scanner.nextLine();
//        System.out.println("请输入名称");
//        String nickname=scanner.nextLine();
//        System.out.println("请输入年龄");
//        int age = scanner.nextInt();

        UserInfo userInfo =InputUtil.getInputObject(new UserInfo(),"欢迎注册","注册");//获取一个输入对象
        //把new好的UserInfo传给InputUtil.getInputObject
        /*表示通过 InputUtil.getInputObject(...) 方法自动读取用户输入，并封装到传入的 UserInfo 对象中。
        InputUtil 会根据 UserInfo 类中的字段信息（如字段上的 @InputField 注解）来提示用户输入每个字段的内容。
        代替了Scanner

*/
        System.out.println(userInfo);

        int num=reg(userInfo);
        if (num>0){
            System.out.println("注册成功");
        }
    }
    public static int reg(UserInfo userInfo) throws Exception {
     /*   Class.forName("com.mysql.cj.jdbc.Driver");//因为Java认为万一没有这个类 所以会报错

        //2
        Connection connection = DriverManager.getConnection(
                //数据库地址格式:jdbc:mysql://数据库IP:端口/数据库名?一堆参数
                "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                "root",//数据库用户名
                "root"//数据库密码
        );
        System.out.println("成功链接数据库!");*/
        try (

                Connection connection = DBUtil.getConnection();
        ) {
            //3
            Statement statement = connection.createStatement();
        /*向userinfo表中插入一条记录
INSERT INTO userinfo(username, password, nickname, age)
VALUES ('张三','123456','阿三','22')


         */
            String sql = "INSERT INTO userinfo(username, password, nickname, age) " +
                    "VALUES ('" + userInfo.getUsername() + "','" + userInfo.getPassword() + "','" + userInfo.getNickname() + "','" + userInfo.getAge() + "')";
            System.out.println(sql);
            int num = statement.executeUpdate(sql);
            //最终操作完毕与数据库断开链接
            connection.close();
            return num;
        }
    }
}

